//////////////////////////////////////////////////////////////////////////
#pragma once


//////////////////////////////////////////////////////////////////////////
#ifdef SIMD_NEON
namespace Math
{
	namespace Simd
	{
		struct Neon
		{
			typedef float32x4_t					Vec4f_t;
			typedef float32x4_t					Param128_t;


			template< typename Type >
			struct Param
			{
				typedef const Type					Type_t;
			};


			static Vec4f_t						Create( float x, float y, float z )
			{
				Vec4f_t		result	=	{x, y, z, 0.0f};
				return result;
			}

			static Vec4f_t						Create( float x, float y, float z, float w )
			{
				Vec4f_t		result	=	{x, y, z, w};
				return result;
			}

			static Vec4f_t						Add( Vec4f_t lhs, Vec4f_t rhs )
			{
				return vaddq_f32( lhs, rhs );
			}
		};
	}
}
#endif
